/*
 * to use online script you can use jquery getScript plugin as follows:
 * 
 * $.getScript('http://sisense.com/abc.js', function(data, textStatus)
 * {
 *      // your code which requires abc.js here
 * });
 * 
 * // more info at: http://api.jquery.com/jQuery.getScript/
 *
 */


/*
 * set to true when replacing widget rendering engine.
 */
this.isCustom = true;

/*
 * exectuted after the widget controller was initialized, useful when overriding entire widget in order to instantiate entirely different implementation.
 *
 * @param {args} wraps all function arguments, including widget, dashboard and widget controller instances.
 *
 */
this.init = function (args) {

};

/*
 * executed before the widget query result is loaded to the DOM and allows canceling such beavior and replace it with custom widget implementation.
 * to cancel the default population just set 'args.cancel = true' and the widget default population will be ignored.
 *
 * @param {args} wraps all function arguments, including query result, widget, dashboard and widget controller instances.
 *
 */
this.beforeResultLoaded = function (args) {
    
    var rowIndex = 0,
        columnIndex = 1;

    var containerId = $(args.element).attr('id');	
    var value = args.result.getRow(rowIndex)[columnIndex].data;

	var options = {
		renderTo: containerId,
		min: -100,
		max: 100,
		value: value * 100,
		tickInterval: 20,
		ranges: [{
			from: -100,
			to: -20,
			color: '#55BF3B' // Green
		}, {
			from:-20,
			to: 20,
			color: '#DDDF0D' // Yellow
		}, {
			from: 20,
			to: 100,
			color: '#DF5353' // Red
		}] 		
	};
		
    $.getScript('http://s3.amazonaws.com/data.sisense.com/PrismWebExtensions/DialWidget/dialWidget-min.js', function(data, textStatus) {

        // Build the dial
        var dial = drawDial(options);
    });  
};

/*
 * executed after the widget result were added to the DOM. useful to apply DOM tweaks after query result population.
 *
 * @param {args} wraps all function arguments, including query result, widget, dashboard and widget controller instances.
 *
 */
this.afterResultLoaded = function (args) {
};

/*
 * exectuted after all dashboard widget models were initialiezed. useful for binding with other widget events.
 *
 * @param {args} wraps all function arguments, including widget, dashboard and widget controller instances.
 *
 */
this.handleDashboardInitialized = function (args) {
};
